<?php
require_once('Page.php');
require_once('Home/Home.php');
require_once('Datenbank/db.php');
require_once('Home/simple_html_dom.php');

class Home extends HTMLPage implements Page{
 
	private $link = '';
	private $produktArray = Array();
	private $reportArray = Array();
	
	public function __construct() {
		$this->link = Db::getConnection();
		
		$action = isset($_GET['action']) ? $_GET['action'] : '';
		
		if($action == "Update") {
			$this->saveNewValues();
		}
		
		if($action == "Deactivate"){
			$this->deactivateProduct();
		}
		
		if($action == "New"){
			$this->addProduct();
		}
		
		$this->getData();
	}
	
	public function getHTML() {
		include('layout/home.tpl');
	}
	
	private function saveNewValues(){
		// Kontenwerte speichern
		$abfrage_konten = "Select * from produkt where kategorie = 1 and status = 1";
		$ergebnis_konten = mysql_query($abfrage_konten);
		
		while($row = mysql_fetch_assoc($ergebnis_konten))
		{
			$id = $row['id'];
			$date = date('Y-m-d');
			$aktuellerWert = str_replace('\'','', isset($_POST["kontenAktuellerWert_$id"]) ? $_POST["kontenAktuellerWert_$id"] : 0);
			$aktuellerWert = $row['waehrungkurs'] != 'CHF' ? $this->convertCurrency($row['waehrungkurs'], 'CHF', $aktuellerWert) : $aktuellerWert;
			
			$query = "Insert into report(produktfsid, datum, anteile, einstand, aktuellerkurs, aktuellerwert, performanceprozent, performancewert) values('".$id."', '".$date."', '0', '0', '0', '".$aktuellerWert."', '0', '0')";

			mysql_query($query);
		}
		
		// Liquide und gebundene Mittel speichern
		$abfrage_mittel = "Select * from produkt where kategorie != 1 and status = 1";
		$ergebnis_mittel = mysql_query($abfrage_mittel);
		
		while($row = mysql_fetch_assoc($ergebnis_mittel))
		{
			$id = $row['id'];
			$symbol = $row['symbol'];
			$waehrung = $row['waehrung'];
			$waehrungkurs = $row['waehrungkurs'];
			$date = date('Y-m-d');
			$kategorie = $row['kategorie'];
			$anteile = str_replace('\'','', isset($_POST["mittelAnteile_$id"]) ? $_POST["mittelAnteile_$id"] : 0);
			$einstand = str_replace('\'','', isset($_POST["mittelEinstand_$id"]) ? $_POST["mittelEinstand_$id"] : 0);
			$einstandKalk = $einstand;
			$aktuellerKurs = $this->getCurrentPrice($symbol, $kategorie);
			if($waehrung != 'CHF'){
				$einstandKalk = $this->convertCurrency($waehrung, 'CHF', $einstand);
			}
			if($waehrungkurs != 'CHF'){
				$aktuellerKurs = $this->convertCurrency($waehrungkurs, 'CHF', $aktuellerKurs);
			}
			
			$oldKurs = isset($_POST["aktuellerKurs_$id"]) ? $_POST["aktuellerKurs_$id"] : 0;
			
			$veraenderungBetrag = $aktuellerKurs - $oldKurs;
			$veraenderungProzent = $veraenderungBetrag / $oldKurs * 100;
			$aktuellerWert = $aktuellerKurs * $anteile;
			$performanceprozent = $einstand != 0.00 ? ($aktuellerKurs / $einstandKalk * 100) -100 : 0.00;			
			$performancewert = $einstand != 0.00 ? $aktuellerWert - ($einstandKalk * $anteile) : 0.00;
			$query = "Insert into report(produktfsid, datum, anteile, einstand, aktuellerkurs, veraenderungbetrag, veraenderungprozent, aktuellerwert, performanceprozent, performancewert) values('".$id."', '".$date."', '".$anteile."', '".$einstand."', '".$aktuellerKurs."', '".$veraenderungBetrag."', '".$veraenderungProzent."', '".$aktuellerWert."', '".$performanceprozent."', '".$performancewert."')";
		
			mysql_query($query);
		
			$counter++;
		}
	}
	
	private function getCurrentPrice($symbol, $kategorie){
		$target = "http://www.bloomberg.com/quote/$symbol";
		$html = file_get_html($target);
		foreach($html->find('span.price') as $article){
			$string = explode(" ", $article->innertext);
			return str_replace(",","", empty($string[21]) ? $string[9] : $string[21]);
		}
	}
	
	private function convertCurrency($from,$to,$amount){
		$URL = "http://finance.yahoo.com/d/quotes.csv?e=.csv&f=l1&s=". $from . $to ."=X";
		$Handle = @fopen($URL, "r");
		if ($Handle) {
			$Result = fgets($Handle, 4096);
			fclose($Handle);
		}
		return $Result * $amount;
	}
	
	private function deactivateProduct() {
		$id = isset($_GET['id']) ? $_GET['id'] : '';

		$abfrage = "Update produkt set status='0' where id='".$id."'";
		mysql_query($abfrage);
	}
	
	private function addProduct() {
		$produkt = isset($_POST['newProdukt']) ? $_POST['newProdukt'] : '';
		$isin = isset($_POST['newIsin']) ? $_POST['newIsin'] : '';
		$symbol =isset($_POST['newSymbol']) ? $_POST['newSymbol'] : '';
		$waehrung = isset($_POST['newWaehrung']) ? $_POST['newWaehrung'] : '';
		$newWaehrungKurs = isset($_POST['newWaehrungKurs']) ? $_POST['newWaehrungKurs'] : '';
		$kategorie = isset($_POST['newKategorie']) ? $_POST['newKategorie'] : '';
	
		$query = "Insert into produkt (name, isin, symbol, waehrung, waehrungkurs, kategorie, status) values('".$produkt."', '".$isin."', '".$symbol."', '".$waehrung."', '".$newWaehrungKurs."', '".$kategorie."', '1')";
		mysql_query($query);
	}
	
	private function getData() {
		$abfrage_produkte = "Select * from produkt where status = 1";
		$ergebnis_produkt = mysql_query($abfrage_produkte);
	
		$counter = 0;
		while($row = mysql_fetch_assoc($ergebnis_produkt))
		{
			$this->produktArray[$counter]['id'] = $row['id'];
			$this->produktArray[$counter]['name'] = $row['name'];
			$this->produktArray[$counter]['isin'] = $row['isin'];
			$this->produktArray[$counter]['symbol'] = $row['symbol'];
			$this->produktArray[$counter]['kategorie'] = $row['kategorie'];
			$this->produktArray[$counter]['status'] = $row['status'];
				
			$counter++;
		}
		
		$abfrage_report = "Select * from report where datum = (Select datum from report order by datum DESC limit 1)";
		$ergebnis_report = mysql_query($abfrage_report);
		
		while($row = mysql_fetch_assoc($ergebnis_report))
		{
			$produktfsid = $row['produktfsid'];
			$this->reportArray[$produktfsid]['produktfsid'] = $row['produktfsid'];
			$this->reportArray[$produktfsid]['datum'] = $row['datum'];
			$this->reportArray[$produktfsid]['anteile'] = $row['anteile'];
			$this->reportArray[$produktfsid]['einstand'] = $row['einstand'];
			$this->reportArray[$produktfsid]['aktuellerkurs'] = $row['aktuellerkurs'];
			$this->reportArray[$produktfsid]['veraenderungbetrag'] = $row['veraenderungbetrag'] * $row['anteile'];
			$this->reportArray[$produktfsid]['veraenderungprozent'] = $row['veraenderungprozent'];
			$this->reportArray[$produktfsid]['aktuellerwert'] = $row['aktuellerwert'];
			$this->reportArray[$produktfsid]['performanceprozent'] = $row['performanceprozent'];
			$this->reportArray[$produktfsid]['performancewert'] = $row['performancewert'];
		
			$counter++;
		}
	}
}

?>